[iOS 7] まったく新しい機能「マルチタスキング」
マルチタスキングとは
iOS 7からついに全てのアプリケーションでマルチタスク機能が実現されます。AppleのiOS 7のサイトには以下のように書かれています。
アプリケーションを賢く切り替えられるマルチタスキングが、さらに賢くなりました。
iOS 7はあなたがアプリケーションを使いたくなる時間を学習し、あなたがアプリケーションを
起動する前にコンテンツを更新しておきます。例えば、お気に入りのソーシャルアプリケーションを
朝の9時にチェックする習慣があるなら、その時間の前にiOS 7がフィードを読み込んでおきます。
あなたがしたいことを先読みする。それがiOS 7のマルチタスキングです。
なんだかワクワクしますね。具体的にどうなるのか、以下にもう少し詳しく解説していきます。
iOS7のマルチタスク画面
iOS 7からは、マルチタスクの画面に画面も表示されるようになりました。以下はiOS 6とiOS 7の画面の比較です。
iOS 6の場合は、ホームボタンを2回押すと画面がせり上がり、起動したアプリケーションが画面下部に表示されていました。アプリを終了する場合は、アプリアイコンを長押しすると、ウニョウニョ動き、マイナスアイコンを押下すると終了されます。
iOS 7では、アプリアイコン以外に画面も表示されます。アプリを終了する場合は、画面をフリックすると終了します。
iOSのアプリ起動状態
こちらのApp States and Multitaskingに公開されている通り、アプリケーションには以下の状態があります。
iOSアプリの状態遷移図
アプリケーションの状態は、以下になります
- Not running」:アプリが起動されていないか、実行していたが、システムを停止させた。
- Inactive:アプリがフォアグラウンドで実行されているが、利用していない状態
- Active:アプリがフォアグラウンドで実行され、起動中
- Background:アプリがフォアグラウンドには無いけど、まだ動作している状態
- Suspended:メモリの保持はしているが、アプリは動作していない状態
Appleのドキュメントには、ホームボタンを押してから5秒以内に「Background」⇒「Suspended」切り替わりますが、アプリによってバックグラウンドで動作する時もあり、その場合は、約10分以内で処理が完了しなければiOS側で強制的に「Suspended」になると記載されています。今までもダウンロードなどもバックグラウンドで行うことができましたが10分以内に処理が完了しない場合や、他のアプリの起動状況により、Suspendedしてしまいます。
iOS 7から何ができるのか?
iOS 6までもマルチタスク機能というのはありましたが、バックグラウンドで起動するアプリと言うのは限定的で以下のアプリが対応していました。
- 位置情報サービス/GPS:Map系のアプリ
- オーディオ再生:音楽系のアプリ
- iTune同期:iTune
- ネットワークアクティビティ:AppStore等
- VoIP(Voice over IP):Skype、LINE等
- 位置情報系アプリ:Maps、Runkeeper等
- Newsstand:新しいコンテンツをダウンロードしている場合
目覚ましアプリなど使っていた方は、わかると思いますが、iOS 6までは、画面起動したままじゃないと目覚ましとして機能しないので、大変不便に感じていたと思います。iOS 7からは、上記のBackground状態でアプリが起動されるため、デフォルトの目覚まし時計のような使い方ができます。(iOS 7のみ)
また、ゲームなどをやっているとステージデータのダウンロードを起動直後に行われたり、ニュースアプリなどは、起動してからニュースのダウンロードなどが行われていました。ユーザーに直接関係ない処理もiOS 6まではアプリ起動時に行わなければなりませんでしたが、今後はアップロード、ダウンロードのような処理は、Backgroundで動かすことができます。
バッテリーは大丈夫なのか?
私は、今までiPhone5のiOS 6を使っていましたが、正直バッテリー持ちは悪かったです。これにマルチタスキングが加わることで、更にバッテリー持ちが悪くなることが懸念されますが、Appleの発表では、バッテリー寿命を節約するために、ネットワークの状態によって電力消費量を調整するとかで「グレートバッテリーライフを実現」(Apple)と言っています。
まとめ
前述の通りコンテンツのアプロード、ニュースのダウンロードなど、アプリケーション側で起動直後にやっていた処理が、Backgroundで可能になったことにより、ユーザーにとっても利便性が上がります。ただし、Appleはロングバッテリーと言っていますが、少なくともBackgroundでプロセスが起動していると、バッテリーは消費しますので、どの処理をBackgroundで行うかなど、適切なアプリケーション設計が必要になってきます。
修正
Suspendedの内容が間違えていたので修正しました。